package MODELO;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DAOEntidadImportarBD extends ManejadorBaseDatos implements IDAOPersistencia {

    public DAOEntidadImportarBD() throws Exception {
        super();
    }

    public DAOEntidadImportarBD(String driver, String servidor, String url, String usuarioBD, String passwordUsuarioBD, String nombreBD) throws Exception {
        super(driver, servidor, url, usuarioBD, passwordUsuarioBD, nombreBD);
    }
    
    public int validar_existencia_importar(IEntidad objeto) throws Exception  {
        int rpta = 0;
        try {
            ResultSet prueba;
            EntidadInformacion_BD miEntidadInformacion_BD = (EntidadInformacion_BD) objeto;
            String fecha = miEntidadInformacion_BD.getFecha();
            int cod_unidad_ejecutora = miEntidadInformacion_BD.getId_unidadejecutora();
            CallableStatement proc = getConexion().prepareCall(" CALL detalle_reporte_validar_importar(?,?) ");
            proc.setString("pfecha", fecha);//Tipo String
            proc.setInt("pcod_unidad_ejecutora", cod_unidad_ejecutora);//Tipo Int 
           prueba = proc.executeQuery();
            while (prueba.next()) {
                rpta = Integer.parseInt(prueba.getString("COUNT(*)"));
            }
        } catch (SQLException | NumberFormatException e) {
            System.out.println(e);
        }
        desconectar();
        return rpta;
    }
    
    public int borrar(IEntidad objeto) throws Exception {
        int rpta = 0;
        try {
            EntidadInformacion_BD miEntidadInformacion_BD = (EntidadInformacion_BD) objeto;
            String fecha = miEntidadInformacion_BD.getFecha();
            int cod_unidad_ejecutora = miEntidadInformacion_BD.getId_unidadejecutora();
            CallableStatement proc = getConexion().prepareCall(" CALL detalle_reporte_importar_eliminar(?,?) ");
            proc.setString("pfecha", fecha);//Tipo String
            proc.setInt("pcod_unidad_ejecutora", cod_unidad_ejecutora);//Tipo String
            proc.execute();
            rpta = 1;
        } catch (Exception ex) {
            rpta = 0;
            System.out.println(ex);
        }
        desconectar();
        return rpta;
    }

    @Override
    public int insertar(IEntidad objeto) throws Exception {
        int rpta = 0;
        try {
            EntidadInformacion_BD miEntidadInformacion_BD = (EntidadInformacion_BD) objeto;
            Connection conn = getConexion();
            String direccion = miEntidadInformacion_BD.getRuta();
            String direccion_converjava = direccion.replace('\\', '/');
            PreparedStatement stmt = conn.prepareStatement("load data local infile '" + direccion_converjava + "' into table t_detalle_reporte fields terminated by ';' enclosed by '\"'lines terminated by '\r\n'(`fecha`,`valor`,`T_Usuario_id_Usuario`,`T_Establecimiento_cod_RENAES`,`T_Establecimiento_T_MicroRed_codigo`,`T_Establecimiento_T_Unidad_Ejecutora_id_unidEjecut`,`T_Establecimiento_T_FON_cod_FON`,`T_Establecimiento_Categoria_Establec_id_Categ`,`T_Establecimiento_T_Distrito_codigo`,`T_Fila_codigo_Fila`,`T_Columna_codigo_Columna`);");
            stmt.execute();
            rpta = 1;
        } catch (Exception ex) {
            rpta = 0;
            System.out.println(ex);
        }
        desconectar();
        return rpta;
    }

    @Override
    public int borrar(String condicion) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public int modificar(IEntidad objeto) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
